package org.example.mapper;

import org.apache.ibatis.annotations.Param;
import org.example.entity.Student;

import java.util.List;
import java.util.Map;

/*
    好习惯：（后续说明）
        StudentMapper 中的抽象方法名
        和
        StudentMapper.xml 中的sqlId名

        要一模一样

 */
public interface StudentMapper {

    //根据id查询单条记录
    Student getById(String id);
    List<Student> getAll();
    void insert(Student s);
    void update(Student s);
    void delete(String id);

    List<Student> getByName(String name);

    /*
        为sql传递参数
            传递N个参数
                如果是来自于一张表，那么通过实体类对象，直接封装即可
                例如：传递name和age，将name和age封装到Student s中，传递s即可

                如果是来自于两张表
                student  classes

                解决方案1：
                class StudentAndClasses{
                    参数1
                    参数2
                }

                解决方案2：
                    Map集合
                        put 参数1 参数2


                以上解决方案1和方案2，虽然都可行
                但是也都是同一个内核，就是将N多个参数，还是变成了一个参数进行传递

            MyBatis对于sql N多个参数的传递问题，是有解决方案的


     */


    /*

        <select id="getByNameAndAge" resultType="Student">
            select * from t_student where name like '%' #{name} '%' and age=#{age}
        </select>

     */
    List<Student> getByNameAndAge(@Param("name") String name, @Param("age") int age);


}










